package com.nd.qa.shareplate.service;

import java.util.HashMap;
import java.util.List;

import com.nd.qa.shareplate.model.ElementAction;
import com.nd.qa.shareplate.model.PageElement;

public interface PageElementService {

	/**
	 * 新增元素
	 * @param element
	 * @return
	 */
	public HashMap<String, Object> insertElememt(PageElement element) throws Exception;
	/**
	 * 修改元素信息
	 * @param element
	 */
	public void updateElement(PageElement element) throws Exception;
	/**
	 * 修改拖拽时，目标元素信息
	 * @param eleParam
	 * @throws Exception
	 */
	public Integer updateElmentInfo(HashMap<String, Object> eleParam);
	/**
	 * 复用模板时，修改元素信息
	 * @param element
	 */
	public void updateCopyElements(PageElement element);
	/**
	 * 删除元素
	 * @param element
	 */
	public void deleteElement(PageElement element) throws Exception;
	/**
	 * 查询元素类型
	 * @return
	 */
	public List<HashMap<String, Object>> queryElementType() throws Exception;
	/**
	 * 查询操作类型
	 * @return
	 */
	public List<HashMap<String, Object>> queryElementAction() throws Exception;
	/**
	 * 查询页面元素信息
	 * @return
	 */
	public List<HashMap<String, Object>> queryElementById(PageElement pageElement) throws Exception;
	/**
	 * 分页查询元素记录
	 * @param paramMap
	 * @return
	 */
	public List<HashMap<String, Object>> queryLimitElement(HashMap<String, Object> paramMap) throws Exception;
	/**
	 * 查询元素序列
	 * @param seqName
	 * @return
	 * @throws Exception
	 */
	public Integer quertElmSeqByName(String seqName) throws Exception;
	/**
	 * 查询单个元素信息
	 */
	public PageElement querySingleElementById(Integer elementId) throws Exception;
	/**
	 * 根据元素ID数组查询元素信息
	 */
	public List<PageElement> queryElementsByIdList(List<Integer> elementIdList) throws Exception;
	/**
	 * 查询子元素信息
	 */
	public PageElement queryChildElementById(Integer elementId) throws Exception;
	/**
	 * 查询页面上的所有元素信息
	 * @param pageId
	 * @return List<PageElement>
	 */
	List<PageElement> queryElementForPageId(int pageId) throws Exception;
	/**
	 * 查询新增页面中目标元素信息
	 * @param pageElement
	 * @return
	 * @throws Exception
	 */
	public PageElement queryTargetElement(PageElement pageElement) throws Exception;
	/**
	 * 查询元素详细信息
	 * @param pageElement
	 * @return
	 * @throws Exception
	 */
	public PageElement queryElementInfoByElemId(PageElement pageElement) throws Exception;
	/**
	 * 查询当前页面中，元素id的最大值
	 * @param pageId
	 * @return
	 * @throws Exception
	 */
	public Integer queryMaxElementId(Integer pageId) throws Exception;
	/**
	 * 修改目标元素的信息
	 * @param pElment
	 * @throws Exception
	 */
	public void updateElementById(HashMap<String, Object> pElment) throws Exception;
}
